|
A greedy algorithm is an algorithm that follows the problem solving heuristic of making the locally optimal choice at each stage with the hope of finding a global optimum. In many problems, a greedy strategy does not in general produce an optimal solution, but nonetheless a greedy heuristic may yield locally optimal solutions that approximate a global optimal solution in a reasonable time. For example, a greedy strategy for the traveling salesman problem (which is of a high computational complexity) is the following heuristic: "At each stage visit an unvisited city nearest to the current city". This heuristic need not find a best solution, but terminates in a reasonable number of steps; finding an optimal solution typically requires unreasonably many steps. In mathematical optimization, greedy algorithms solve combinatorial problems having the properties of matroids. ==Specifics== In general, greedy algorithms have five components: # A candidate set, from which a solution is created # A selection function, which chooses the best candidate to be added to the solution # A feasibility function, that is used to determine if a candidate can be used to contribute to a solution # An objective function, which assigns a value to a solution, or a partial solution, and # A solution function, which will indicate when we have discovered a complete solution Greedy algorithms produce good solutions on some mathematical problems, but not on others. Most problems for which they work will have two properties: ; Greedy choice property : We can make whatever choice seems best at the moment and then solve the subproblems that arise later. The choice made by a greedy algorithm may depend on choices made so far, but not on future choices or all the solutions to the subproblem. It iteratively makes one greedy choice after another, reducing each given problem into a smaller one. In other words, a greedy algorithm never reconsiders its choices. This is the main difference from dynamic programming, which is exhaustive and is guaranteed to find the solution. After every stage, dynamic programming makes decisions based on all the decisions made in the previous stage, and may reconsider the previous stage's algorithmic path to solution. ; Optimal substructure : "A problem exhibits optimal substructure if an optimal solution to the problem contains optimal solutions to the sub-problems."〔Introduction to Algorithms (Cormen, Leiserson, Rivest, and Stein) 2001, Chapter 16 "Greedy Algorithms".〕 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「greedy algorithm」の詳細全文を読む スポンサード リンク
|